import React, { Component } from 'react'

export default class Array extends Component {
    inventors = [
        { first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 },
        { first: 'Isaac', last: 'Newton', year: 1643, passed: 1727 },
        { first: 'Galileo', last: 'Galilei', year: 1564, passed: 1642 },
        { first: 'Marie', last: 'Curie', year: 1867, passed: 1934 },
        { first: 'Johannes', last: 'Kepler', year: 1571, passed: 1630 },
        { first: 'Nicolaus', last: 'Copernicus', year: 1473, passed: 1543 },
        { first: 'Max', last: 'Planck', year: 1858, passed: 1947 },
        { first: 'Katherine', last: 'Blodgett', year: 1898, passed: 1979 },
        { first: 'Ada', last: 'Lovelace', year: 1815, passed: 1852 },
        { first: 'Sarah E.', last: 'Goode', year: 1855, passed: 1905 },
        { first: 'Lise', last: 'Meitner', year: 1878, passed: 1968 },
        { first: 'Hanna', last: 'Hammarström', year: 1829, passed: 1909 }
      ];
  
    flavours = ['Chocolate Chip', 'Kulfi', 'Caramel Praline', 'Chocolate', 'Burnt Caramel', 'Pistachio', 'Rose', 'Sweet Coconut', 'Lemon Cookie', 'Toffeeness', 'Toasted Almond', 'Black Raspberry Crunch', 'Chocolate Brownies', 'Pistachio Almond', 'Strawberry', 'Lavender Honey', 'Lychee', 'Peach', 'Black Walnut', 'Birthday Cake', 'Mexican Chocolate', 'Mocha Almond Fudge', 'Raspberry'];
  
    people = ['Beck, Glenn', 'Becker, Carl', 'Beckett, Samuel', 'Beddoes, Mick', 'Beecher, Henry', 'Beethoven, Ludwig', 'Begin, Menachem', 'Belloc, Hilaire', 'Bellow, Saul', 'Benchley, Robert', 'Benenson, Peter', 'Ben-Gurion, David', 'Benjamin, Walter', 'Benn, Tony', 'Bennington, Chester', 'Benson, Leana', 'Bent, Silas', 'Bentsen, Lloyd', 'Berger, Ric', 'Bergman, Ingmar', 'Berio, Luciano', 'Berle, Milton', 'Berlin, Irving', 'Berne, Eric', 'Bernhard, Sandra', 'Berra, Yogi', 'Berry, Halle', 'Berry, Wendell', 'Bethea, Erin', 'Bevan, Aneurin', 'Bevel, Ken', 'Biden, Joseph', 'Bierce, Ambrose', 'Biko, Steve', 'Billings, Josh', 'Biondo, Frank', 'Birrell, Augustine', 'Black Elk', 'Blair, Robert', 'Blair, Tony', 'Blake, William'];
    
    data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ];

    componentDidMount(){
      // Array.prototype.filter()
      // 1. Filter the list of inventors for those who were born in the 1500's
        const {inventors} = this
        const fifteen = inventors.filter( (inventor)=> {
            if(inventor.year >= 1500 && inventor.year <= 1600) { return true;}
            else {return false}
        })
        // 简写
        const fifteen_2 = inventors.filter( inventor=> inventor.year >= 1500 && inventor.year <= 1600)
        // console.log("fifteen -- length", fifteen.length)
        // console.table(fifteen)
        // console.table(fifteen_2) 
  
      // Array.prototype.map()
      // 2. Give us an array of the inventors' first and last names
       const fullnames = inventors.map( (inventor)=> {return inventor.first + " " + inventor.last })
       const fullnames_2 = inventors.map( (inventor)=> `${inventor.first} ${inventor.last}`)
        // console.log("fullnames -- length", fullnames.length)
        // console.log(fullnames)
        // console.log(fullnames_2)
  
      // Array.prototype.sort()
      // 3. Sort the inventors by birthdate, oldest to youngest

        const inventorsSorted = inventors.sort( (a, b)=> {
        if(a.year > b.year) {return 1}
        else {return -1}
        })

        const ordered = inventors.sort( (a, b)=> a.year > b.year? 1: -1)
        // console.log("inventorsSorted -- length", inventorsSorted.length)
        // console.table(inventorsSorted)
        // console.table(ordered)
  
      // Array.prototype.reduce()
      // 4. How many years did all the inventors live?
      let totalYears = 0

      for (let index = 0; index < inventors.length; index++) {
        totalYears += inventors[index].passed - inventors[index].year
        const element = inventors[index];
        
      }

      const totalYears_1 = inventors.reduce((total, inventor) => {return total + (inventor.passed - inventor.year)}, 0)
    //   console.log("totalYears -- length", totalYears.length)
    //   console.log(totalYears, totalYears_1)
  
      // 5. Sort the inventors by years lived

      const ordered_oldest = inventors.sort( (a,b) => {
        const lastGuy = a.passed - a.year
        const nextGuy = b.passed - b.year
        return lastGuy > nextGuy? -1: 1
    })

      const ordered_oldest_2 = inventors.sort( (a,b) => a.passed - a.year > b.passed - b.year? -1: 1)

    //   console.log("totalYears -- length", ordered_oldest.length)
    //   console.table(ordered_oldest)
    //   console.table(ordered_oldest_2)

      // 6. create a list of Boulevards in Paris that contain 'de' anywhere in the name
      // https://en.wikipedia.org/wiki/Category:Boulevards_in_Paris
    
      
      // 7. sort Exercise
      // Sort the people alphabetically by last name
      const {people} = this
      const alpha = people.sort( (lastOne, nextOne) => {
        const [aLast, aFirst] = lastOne.split(', ')
        const [bLast, bFirst] = nextOne.split(', ')
        return aLast > bLast? 1: -1
      })
    //   console.log("alpha -- length", alpha.length)
    //   console.log(alpha)
  
      // 8. Reduce Exercise
      // Sum up the instances of each of these
      const {data} = this
      const transportationSum = data.reduce( (obj, item) => {
        if(!obj[item]) {obj[item] = 0}
        obj[item]++;
        return obj

      }, {})
      console.log("transportationSum -- length", transportationSum.length)
      console.log(transportationSum)
    }   

  render() {
    return (
      <div>Array Exercise</div>
    )
  }
}
